package Generic;

/**
 * @Author:此处T可以随便写任意标识,常见的如T E K V等形式的参数常用于
 * 表示泛型
 * //在实例化泛型类时,必须指定T的具体类型
 * @param <T>
 */
public class Generic<T> {
    private T key;

    public Generic(T key) {
        this.key = key;
    }

    public T getKey() {
        return key;
    }

    Generic<Integer> generic = new Generic<Integer>(123456);

    public interface Generator<T> {
        public T method();
    }

    //实现泛型接口 不指定类型：
    class GeneratorImpl implements Generator {
        @Override
        public Object method() {
            return null;
        }
    }

    //实现泛型接口,指定类型：
    class GeneratorImp implements Generator<String> {
        @Override
        public String method() {
            return "hello";
        }
    }

    //泛型方法：
    public static <E> void printArray(E[] inputArray) {
        for (E element : inputArray) {
            System.out.println(element);
        }
    }

    //创建不同类型的数组：Integer,Double,Character
    Integer[] intArray = {1, 2, 3, 4, 5};
    String[] stringArray = {"Hello", "World"};
}
